package wxk.interview.hash.map;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

/**
 * @author wangxuekai
 * @version 2.2
 * @Date 2017/3/22.
 * @since 2.2
 */
public class HashMapTest {

    public static void main(String[] args) {
        Integer integer = 100;

        MyHashKey k1 = new MyHashKey(100);
        MyHashKey k2 = new MyHashKey(101);
        MyHashKey k3 = new MyHashKey(0);

        HashMap<MyHashKey, String> map = new HashMap<MyHashKey, String>(10);
        /*
        * HashMap存储时,即调用put方法,会首先根据K的hashCode与table的length,判断出位于数组的index
        * 若K为null,则调用HashMap的putForNullKey,放入数组第一位
        * 取出数组该位置的Entry,判断是否为null,若为null,创建新的Entry放入
        * 否则,循环取出链表中的Entry,依次判断K的HashCode equals,相同则替换，返回旧值
        * 循环完成后,没有与对应的K,则创建新的Entry,放入Index的链表的首位,next指向原来链表首位,并返回null
        * */
        map.put(k1, "1");
        map.put(k2, "2");
        map.put(k3, "0");
        map.put(null, "null");
        map.put(k3, "4");

        System.out.println(map.size());

        System.out.println(map);

    }
}
